package parse;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.ObjectInputStream.GetField;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.ArrayList;

import javax.swing.JSpinner.DateEditor;

import connexionBd.ConnexionBd;
import util.DateConvert;
import data.bean.Equipement;
import data.bean.Maison;
import data.bean.Releve;
import data.dao.EquipementDAO;
import data.dao.MaisonDAO;
import data.dao.ReleveDAO;

public class ParseSplitLignes {

	private final static Connection conn = ConnexionBd.getConnection(); 
	
//	public static void main(String[] args) throws SQLException {
//		
//		//create directory file
//		File directory = new File("files");
//		Statement stm = null;
////		Parse parse = new Parse();
//
//		// returns pathnames for files and directory
//		File[] paths = directory.listFiles();
//
//		// for each pathname in pathname array
//		for(File path:paths)
//		{
//			try {
//				System.out.println("########"+ path.getName() + "#######");
//				stm = parseContenu(new File(path.getAbsolutePath()));
//				} catch (IOException e) {
//				e.printStackTrace();
//			} catch (SQLException e) {
//				//conn.rollback();
//				System.out.println("Erreur SQL ! ");
//				e.printStackTrace();
//			}
//		}
//		int res[] = stm.executeBatch();
//		conn.commit();
//		System.out.println(" Finish ");
//	}

	public static void parseContenu(File file, Statement stat) throws IOException, SQLException {
		BufferedReader br = null;
		String line = "";
		String splitBy = "	";
		int numLigne = 1;
		
		Equipement equipement = null;
		//ArrayList<Releve> releves = new ArrayList<>();
		
		//recup id maison et equipement
		String[] titreFile = file.getName().split("-");
		String idEquipement = titreFile[2].split("\\.")[0];
		Integer idMaison = Integer.parseInt(titreFile[1]);
		
		// check si maison existe, insert sinon
		Maison maison = MaisonDAO.select(idMaison);
		if (maison == null) {
			maison = new Maison(idMaison);
			MaisonDAO.insert(maison);
			conn.commit();
		}
		
		try {
			br = new BufferedReader(new FileReader(file));
			String insertReleve = ReleveDAO.getRequeteInsert();
			while ((line = br.readLine()) != null) {
				String[] data = line.split(splitBy);
				
				
				if (numLigne == 3) {
					//creation de l'equipement plus recuperation des infos et des libellées
					String[] dataEntete = line.split(" : ")[1].split(" \\(");
					equipement = new Equipement(Integer.parseInt(idEquipement), dataEntete[0], dataEntete[1].substring(0, dataEntete[1].length()-1));
					stat.addBatch(EquipementDAO.getInsertRequete(equipement));
				}else if(numLigne > 5){
					String dateHeure = data[0] + " " + data[1];
					Releve releve = new Releve(maison.getId(), equipement.getId(), dateHeure, data[2], data[3]);
					insertReleve +=  ReleveDAO.getRequeteInsertPerf(releve) ;
					if (numLigne % 100 == 0) {
						stat.addBatch(insertReleve.substring(0, insertReleve.length() - 1 ));
						insertReleve = ReleveDAO.getRequeteInsert();
					}
					//stat.addBatch(ReleveDAO.getRequeteInser1t(releve));
					
				}
				numLigne ++;
			}
			stat.addBatch(insertReleve.substring(0, insertReleve.length() - 1 ));
			
			
		} catch (IOException e) {
			e.printStackTrace();
		} 
				br.close();
		}
}


